﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Modelo.Modulos.ClasesModelado;

namespace AccesoDatos.Modulos.ClasesAccesoDatos
{
   public class UsuriosBD
    {
       public List<UsuarioMod> ConsultarUsuarios(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarUsuarios";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<UsuarioMod> lista = new List<UsuarioMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   UsuarioMod obj = new UsuarioMod();
                   obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                   obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                   obj.Identificacion = Convert.ToInt32(dt.Rows[i]["Identificacion"]);
                   obj.Perfil = dt.Rows[i]["NombrePerfil"].ToString();
                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<PuestosMod> ConsultarPuestos(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarPuestos";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<PuestosMod> lista = new List<PuestosMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   PuestosMod obj = new PuestosMod();
                   obj.IdPuesto = Convert.ToInt32(dt.Rows[i]["IdPuesto"]);
                   obj.Nombre = dt.Rows[i]["NombrePuesto"].ToString();
                   obj.Descripcion = dt.Rows[i]["DescripcionPuesto"].ToString();
                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<PerfilesMod> ConsultarPerfil(SqlCommand comando)
       {
           try
           {
               string sp = "spConsultarPerfiles";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<PerfilesMod> lista = new List<PerfilesMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   PerfilesMod obj = new PerfilesMod();
                   obj.IdPerfil = Convert.ToInt32(dt.Rows[i]["IdPerfil"]);
                   obj.NombrePerfil = dt.Rows[i]["NombrePerfil"].ToString();
                   obj.DescripcionPerfil = dt.Rows[i]["DescripcionPerfil"].ToString();
                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public void InsertarUsuario(SqlCommand comando, UsuarioMod obj)
       {
           try
           {
               string sp = "spInsertarUsuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();
               
              
               comando.Parameters.Add(new SqlParameter("@Nombre", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@PrimerApellido", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@SegundoApellido", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@Telefono", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@LoginUsuario", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@Contrasena", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@CostoPorHora", SqlDbType.Money));
               comando.Parameters.Add(new SqlParameter("@IdPuesto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@FechaNacimiento", SqlDbType.DateTime));
               comando.Parameters.Add(new SqlParameter("@Identificacion", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@Foto", SqlDbType.NVarChar));

               
             
               comando.Parameters[0].Value = obj.Nombre;
               comando.Parameters[1].Value = obj.PrimerApellido;
               comando.Parameters[2].Value = obj.SegundoApellido;
               comando.Parameters[3].Value = obj.Telefono;
               comando.Parameters[4].Value = obj.IdPerfil;
               comando.Parameters[5].Value = obj.LoginUsuario;
               comando.Parameters[6].Value = obj.Contrasena;
               comando.Parameters[7].Value =obj.CostoPorHora;
               comando.Parameters[8].Value = obj.IdPuesto;
               comando.Parameters[9].Value = obj.FechaNacimiento;
               comando.Parameters[10].Value = obj.Identificacion;
               comando.Parameters[11].Value = obj.Foto;

               

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public void EliminarUsuario(SqlCommand comando, UsuarioMod obj)
       {
           try
           {
               string sp = "spEliminaUsuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();


               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));

               comando.Parameters[0].Value = obj.IdUsuario;

               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public List<UsuarioMod> ConsultarUsuarioID(SqlCommand comando, UsuarioMod objs)
       {
           try
           {
               string sp = "spConsultarUsuariobyId";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));

               comando.Parameters[0].Value = objs.IdUsuario;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               List<UsuarioMod> lista = new List<UsuarioMod>();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   UsuarioMod obj = new UsuarioMod();

                   obj.Nombre = dt.Rows[i]["NombreUsuario"].ToString();
                   obj.PrimerApellido = dt.Rows[i]["PrimerApellido"].ToString();
                   obj.SegundoApellido = dt.Rows[i]["SegundoApellido"].ToString();
                   obj.Telefono=Convert.ToInt32( dt.Rows[i]["Telefono"]);
                   obj.IdPerfil= Convert.ToInt32(dt.Rows[i]["IdPerfil"]);
                   obj.Perfil= dt.Rows[i]["NombrePerfil"].ToString();
                   obj.LoginUsuario= dt.Rows[i]["LoginUsuario"].ToString();
                   obj.Contrasena = dt.Rows[i]["Contrasena"].ToString();
                   obj.CostoPorHora= Convert.ToDecimal(dt.Rows[i]["CostoPorHora"]);
                   obj.IdPuesto = Convert.ToInt32(dt.Rows[i]["IdPuesto"]);
                   obj.Puesto= dt.Rows[i]["NombrePuesto"].ToString();
                   obj.FechaNacimiento =Convert.ToDateTime( dt.Rows[i]["FechaNacimiento"]);
                   obj.Identificacion = Convert.ToInt32(dt.Rows[i]["Identificacion"]);
                   obj.Foto = dt.Rows[i]["Foto"].ToString();

                   lista.Add(obj);
               }


               return lista;

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
       public UsuarioMod ConsultarUsuarioContrasena(SqlCommand comando, UsuarioMod objs)
       {
           try
           {
               string sp = "spConsultarUsuarioContrasena";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@LoginUsuario", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@Contrasena", SqlDbType.VarChar));

               comando.Parameters[0].Value = objs.LoginUsuario;
               comando.Parameters[1].Value = objs.Contrasena;

               IDbDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
               DataSet ds = new DataSet();
               da.Fill(ds);

               DataTable dt = ds.Tables[0];
               UsuarioMod obj = new UsuarioMod();

               for (int i = 0; i < dt.Rows.Count; i++)
               {
                   obj.IdUsuario = Convert.ToInt32(dt.Rows[i]["IdUsuario"]);
                   obj.NombreCompleto = dt.Rows[i]["NombreCompleto"].ToString();
                   obj.IdPerfil = Convert.ToInt32(dt.Rows[i]["IdPerfil"]);


               }

               return obj;
               

           }
           catch (Exception exc)
           {
               throw exc;
           }
       }

       public void ActualizarUsuario(SqlCommand comando, UsuarioMod obj)
       {
           try
           {
               string sp = "spActualizarUsuario";

               comando.CommandType = CommandType.StoredProcedure;
               comando.CommandText = sp;
               comando.Parameters.Clear();

               comando.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@NombreUsuario", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@PrimerApellido", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@SegundoApellido", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@Telefono", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@IdPerfil", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@LoginUsuario", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@Contrasena", SqlDbType.VarChar));
               comando.Parameters.Add(new SqlParameter("@CostoPorHora", SqlDbType.Decimal));
               comando.Parameters.Add(new SqlParameter("@IdPuesto", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@FechaNacimiento", SqlDbType.Date));
               comando.Parameters.Add(new SqlParameter("@Identificacion", SqlDbType.Int));
               comando.Parameters.Add(new SqlParameter("@Foto", SqlDbType.NVarChar));



               comando.Parameters[0].Value = obj.IdUsuario;
               comando.Parameters[1].Value = obj.Nombre;
               comando.Parameters[2].Value = obj.PrimerApellido;
               comando.Parameters[3].Value = obj.SegundoApellido;
               comando.Parameters[4].Value = obj.Telefono;
               comando.Parameters[5].Value = obj.IdPerfil;
               comando.Parameters[6].Value = obj.LoginUsuario;
               comando.Parameters[7].Value = obj.Contrasena;
               comando.Parameters[8].Value = obj.CostoPorHora;
               comando.Parameters[9].Value = obj.IdPuesto;
               comando.Parameters[10].Value = obj.FechaNacimiento;
               comando.Parameters[11].Value = obj.Identificacion;
               comando.Parameters[12].Value = obj.Foto;
               comando.ExecuteNonQuery();


           }
           catch (Exception exc)
           {
               throw exc;
           }
       }
    }


}
